經過一週的基礎建設,我們終於要開始建造數位牧場的控制中心了!今天我們要部署 RKE2 管理叢集,這是 Rancher 的心臟,所有的牧場管理工作都將從這裡開始。就像蓋房子要先打地基一樣,有了穩固的 RKE2 叢集,我們才能在上面安裝 Rancher 管理平台!
RKE2(Rancher Kubernetes Engine 2) 是 Rancher 推出的下一代 Kubernetes 發行版,專為企業級環境設計。
RKE2 的特點:
選擇 RKE2 的原因:
特性 | RKE2 | K3s | 原生 K8s |
---|---|---|---|
目標用途 | 企業級生產環境 | 輕量級/邊緣運算 | 通用 Kubernetes |
安全性 | CIS 合規內建 | 基本安全 | 需手動配置 |
部署複雜度 | 簡單 | 極簡單 | 複雜 |
資源需求 | 中等 | 極低 | 中高 |
Rancher 整合 | 完美整合 | 良好支援 | 需額外配置 |
# 使用 SSH 連線到 rancher-server VM
ssh calvin@192.168.0.116
# 確認系統資訊
cat /etc/os-release
uname -a
# 檢查系統資源
free -h
df -h
# 檢查 CPU 核心數(建議至少 2 核心)
nproc
# 檢查記憶體(建議至少 4GB)
free -h
# 檢查磁碟空間(建議至少 20GB)
df -h /
# 檢查網路連線
ping -c 3 8.8.8.8
curl -I https://get.rke2.io
# 下載 RKE2 安裝腳本
curl -sfL https://get.rke2.io --output install.sh
# 設定執行權限
chmod +x install.sh
# 安裝指定版本的 RKE2
sudo INSTALL_RKE2_VERSION=v1.32.7+rke2r1 INSTALL_RKE2_CHANNEL=stable ./install.sh
# 建立基本配置檔
sudo tee /etc/rancher/rke2/config.yaml << EOF
# data-dir: 預設在 /var/lib/rancher/rke2
# 停用不需要的組件
# disable:
# - rke2-ingress-nginx
# CNI 設定(預設使用 Canal)
# cni:
# - canal
# TLS 配置
tls-san:
- 192.168.0.116
- ithome-rancher.duckdns.org
- rancher.ithome-rancher.duckdns.org
EOF
# 啟用 RKE2 server 服務
sudo systemctl enable rke2-server
# 啟動 RKE2 server
sudo systemctl start rke2-server
# 檢查服務狀態
sudo systemctl status rke2-server
# 即時監控 RKE2 啟動日誌
sudo journalctl -u rke2-server -f
# 查看詳細啟動日誌
sudo journalctl -u rke2-server --no-pager
# 檢查 RKE2 程序
ps aux | grep rke2
啟動成功的標誌:
INFO[2025-08-23T10:30:45.123456789Z] Starting RKE2 server
INFO[2025-08-23T10:30:46.234567890Z] Running kube-apiserver
INFO[2025-08-23T10:30:47.345678901Z] Running kube-scheduler
INFO[2025-08-23T10:30:48.456789012Z] Running kube-controller-manager
INFO[2025-08-23T10:30:49.567890123Z] Running etcd
INFO[2025-08-23T10:31:10.678901234Z] Node token is available at /var/lib/rancher/rke2/server/token
# 建立 kubectl 符號連結
sudo ln -sf /var/lib/rancher/rke2/bin/kubectl /usr/local/bin/kubectl
# 複製 kubeconfig 到用戶目錄
mkdir -p ~/.kube
sudo cp /etc/rancher/rke2/rke2.yaml ~/.kube/config
sudo chown $(id -u):$(id -g) ~/.kube/config
# 驗證權限
ls -la ~/.kube/config
# 檢查節點狀態
kubectl get nodes -o wide
# 檢查系統 Pod
kubectl get pods -A
# 檢查叢集資訊
kubectl cluster-info
# 檢查叢集健康狀況
kubectl get componentstatuses
# kubectl get nodes -o wide
NAME STATUS ROLES AGE VERSION
rancher-server-1 Ready control-plane,etcd,master 5m v1.32.7+rke2r1
# kubectl get pods -A
NAMESPACE NAME READY STATUS RESTARTS
kube-system canal-xxxxx 2/2 Running 0
kube-system coredns-xxxxx 1/1 Running 0
kube-system etcd-rancher-server-1 1/1 Running 0
kube-system kube-apiserver-rancher-server-1 1/1 Running 0
kube-system kube-controller-manager-rancher-server-1 1/1 Running 0
kube-system kube-scheduler-rancher-server-1 1/1 Running 0
# 檢視節點令牌(新增節點時需要)
sudo cat /var/lib/rancher/rke2/server/node-token
# 儲存到安全位置
sudo cp /var/lib/rancher/rke2/server/node-token ~/rke2-node-token.txt
sudo chown $(id -u):$(id -g) ~/rke2-node-token.txt
# 檢查 kubeconfig 檔案
sudo cat /etc/rancher/rke2/rke2.yaml | head -20
1. 服務啟動失敗
# 檢查詳細錯誤日誌
sudo journalctl -u rke2-server --no-pager -l
# 檢查連接埠是否被占用
sudo netstat -tulpn | grep -E "(6443|9345|10250)"
2. 節點狀態為 NotReady
# 檢查 CNI 插件
kubectl get pods -n kube-system | grep canal
# 檢查 kubelet 日誌
sudo journalctl -u rke2-server | grep kubelet
# 重新啟動服務
sudo systemctl restart rke2-server
3. kubectl 無法連線
# 檢查 kubeconfig 權限
ls -la ~/.kube/config
# 檢查 API server 是否運行
sudo netstat -tulpn | grep 6443
今天我們成功建立了數位牧場的控制中心!RKE2 管理叢集已經準備就緒,所有的核心組件都在正常運行。
重點回顧:
明天我們將在這個穩固的 RKE2 叢集上安裝 Rancher Server,讓我們的數位牧場管理平台華麗登場!屆時你就能透過圖形化介面管理整個 Kubernetes 生態系統了。
💡 牧場主小提示:RKE2 的日誌非常詳細,如果遇到問題記得善用
journalctl -u rke2-server -f
來即時監控!另外,RKE2 預設會在/var/lib/rancher/rke2
建立很多重要檔案,記得定期備份這個目錄!